#ifndef LIST_H
#define LIST_H

#include "Object.h"

namespace StructLib
{
    template <typename T>
    class List : public Object
    {
    protected:
        List(const List&);
        List& operator = (const List&);
    public:
        List() {}
        virtual bool Insert(const T& e) = 0;
        virtual bool Insert(int i, const T& e) = 0;
        virtual bool Remove(int i) = 0;
        virtual bool Set(int i, const T&e) = 0;
        virtual bool Get(int i, T&e) const = 0;
        virtual int Length() const = 0;
        virtual void Clear() = 0;
    };
}


#endif // !LIST_H
